package com.own.component.common.base.mapper;

import com.own.component.common.base.entity.BaseMap;
import com.own.component.common.base.entity.BaseQuery;
import com.own.component.common.base.entity.po.BaseBean;
import com.own.component.common.base.entity.vo.BaseBeanVo;

import java.util.List;

/**
 * BasePageMapper
 *
 * @author chenxueli
 * @date 2020/9/29 10:11
 */
public interface BasePageMapper<
        PO extends BaseBean,
        VO extends BaseBeanVo<PO>,
        MAP extends BaseMap<PO>,
        QUERY extends BaseQuery
        > extends BaseMapper<PO> {

    /**
     * 查询分页的ids
     *
     * @param query 查询条件
     * @return 列表ids
     */
    List<Long> listIds(QUERY query);

    /**
     * 查询分页数据
     *
     * @param query 查询条件
     * @return 列表ids
     */
    List<VO> list(QUERY query);

    /**
     * 查询分页数据
     *
     * @param query 查询条件
     * @return 列表ids
     */
    List<VO> listByIds(QUERY query);

    /**
     * 查询map数据
     *
     * @param query 查询条件
     * @return 列表ids
     */
    List<MAP> map(QUERY query);

}
